package com.spring.bean.demo6;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;

/**
 * Spring Bean 管理的注解方式
 */
// @Component("userService")
@Service("userService")
public class UserService {
    // 如果没有提供 set 方法,该注解直接加载属性上即可
    // 否则需要将该注解加载 set 方法上
    @Value("米饭")
    private String food;

    // @Autowired
    // @Qualifier("userDao")
    @Resource(name = "userDao")
    // Autowired 默认按照类型完成注入
    // 如果存在两个相同的 Bean 类型相同,则按照名称进行注入
    // 通过 @Autowired 的 required 属性,设置一定要找到匹配的 Bean
    // 使用 @Qualifier 指定注入的 Bean 的名称
    // Spring 提供对 JSR-250 中定义的 @Resource 标准注解的支持
    // @Resource = @Autowired + @Qualifier
    private UserDao userDao;

    public String sayHello (String name) {
        return "Hello " + name;
    }

    public void eat () {
        System.out.println("eat " + food);
    }

    public void save () {
        System.out.println("Service 中的保存用户的方法");
        userDao.save();
    }
}
